package com.yilin.tms.core.entity.user.organize;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yilin.tms.core.commons.base.BaseEntity;
import com.yilin.tms.core.commons.annotation.Explain;
import com.yilin.tms.core.entity.user.UserType;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Map;

@Entity
@Table(name = "user_member_type")
@TableName("user_member_type")
public class MemberType extends BaseEntity {

    @Column(name = "organize_id")
    private String organizeId;// 所属组织[平台]
    @Column(name = "organize_name")
    private String organizeName;// 所属组织[平台]

    @Column(name = "name")
    private String name;// 会员名称
    @Column(name = "user_type")
    private UserType userType;//会员用户类型
    @Column(name = "status")
    private Boolean status;// 会员状态 0 未启用 1 启动
    @Column(name = "member_code", updatable = false)
    private String memberCode;// 會員唯一码
    @Column(name = "is_default")
    private Boolean isDefault = false;// 是否默认[一个平台、一个类型只允许一个默认]

    //下级平台费率列表
    @Column(name = "below_plat_fee_rate")
    private Double belowPlatFeeRate = 0D; //每单收取下级平台的服务费费率
    //下级平台费率列表
    @Column(name = "below_techy_fee_rate")
    private Double belowTechyFeeRate = 0D; //收取下级平台的通道技术费率

    //货主费率列表
    @Column(name = "shipper_carrier_fee_rate")
    private Double shipperCarrierFeeRate = 0D; //货主服务费---承运 9
    @Column(name = "shipper_match_fee_rate")
    private Double shipperMatchFeeRate = 0D; //货主服务费---撮合 9
    @Column(name = "owner_tax_rate")
    private Double ownerTaxRate = 0D; //货主运单不含税时，撮合时需收取额外税费
    @Column(name = "insurance_rate")
    private Double insuranceRate = 0D;//默认大宗保率
    @Column(name = "free_loading_waiting_minute")
    private Double freeLoadingWaitingMinute = 0D; //免费装货等待时长-分钟
    @Column(name = "free_receipt_waiting_minute")
    private Double freeReceiptWaitingMinute = 0D; //免费卸货等待时长-分钟
    @Column(name = "waiting_unit_cost")
    private Double waitingUnitCost  = 0D; //等待费用/每分钟
    @Column(name = "release_payment_rate")
    private Double releasePaymentRate  = 0D; //发布付款比例   /// 付款比例：设置付款比例后比例付款，付款前均判断
    @Column(name = "rob_payment_rate")
    private Double robPaymentRate  = 0D; //抢单付款比例
    @Column(name = "deliver_payment_rate")
    private Double deliverPaymentRate  = 0D; //发货付款比例
    @Column(name = "arrival_payment_rate")
    private Double arrivalPaymentRate  = 0D; //货到付款比例 ///如果是自动结算 比例无效 默认尾款全付
    @Column(name = "indemnify_switch")
    private Boolean indemnifySwitch = false; //自动赔付开关

    //车主费率列表
    @Column(name = "trucker_carrier_fee_rate")
    private Double truckerCarrierFeeRate = 0D;//车主服务费---承运 0
    @Column(name = "trucker_match_fee_rate")
    private Double truckerMatchFeeRate = 0D;//车主服务费---撮合 0
    @Column(name = "deposit_amount")
    private Double depositAmount = 0D;//车主押金
    @Column(name = "membership_fee")
    private Double membershipFee = 0D;//车主会员费
    @Column(name = "added_tax_rate")
    private Double addedTaxRate = 0D;//增值税
    @Column(name = "city_tax_rate")
    private Double cityTaxRate = 0D;//城建税
    @Column(name = "local_edu_tax_rate")
    private Double localEduTaxRate = 0D;//地方教育税
    @Column(name = "edu_add_tax_rate")
    private Double eduAddTaxRate = 0D;//教育附加税
    @Column(name = "income_tax_rate")
    private Double incomeTaxRate = 0D;//个人所得税
    @Column(name = "cancel_rob_count")
    private Integer cancelRobCount = 0;//车主每日可取消抢单次数
    @Column(name = "electronic_fence_range")
    private Integer electronicFenceRange = 1000;//电子围栏范围，米

    @Transient
    @TableField(exist = false)
    @Explain("功能权限MAP")
    private Map<String,Boolean> incrementMap;

    public Double getBelowTechyFeeRate() {
        return belowTechyFeeRate;
    }

    public void setBelowTechyFeeRate(Double belowTechyFeeRate) {
        this.belowTechyFeeRate = belowTechyFeeRate;
    }

    public Boolean getIndemnifySwitch() {
        return indemnifySwitch;
    }

    public void setIndemnifySwitch(Boolean indemnifySwitch) {
        this.indemnifySwitch = indemnifySwitch;
    }

    public Map<String, Boolean> getIncrementMap() {
        return incrementMap;
    }

    public void setIncrementMap(Map<String, Boolean> incrementMap) {
        this.incrementMap = incrementMap;
    }

    public Integer getElectronicFenceRange() {
        return electronicFenceRange;
    }

    public void setElectronicFenceRange(Integer electronicFenceRange) {
        this.electronicFenceRange = electronicFenceRange;
    }

    public Double getFreeLoadingWaitingMinute() {
        return freeLoadingWaitingMinute;
    }

    public void setFreeLoadingWaitingMinute(Double freeLoadingWaitingMinute) {
        this.freeLoadingWaitingMinute = freeLoadingWaitingMinute;
    }

    public Double getFreeReceiptWaitingMinute() {
        return freeReceiptWaitingMinute;
    }

    public void setFreeReceiptWaitingMinute(Double freeReceiptWaitingMinute) {
        this.freeReceiptWaitingMinute = freeReceiptWaitingMinute;
    }

    public Integer getCancelRobCount() {
        return cancelRobCount;
    }

    public void setCancelRobCount(Integer cancelRobCount) {
        this.cancelRobCount = cancelRobCount;
    }

    public Double getReleasePaymentRate() {
        return releasePaymentRate;
    }

    public void setReleasePaymentRate(Double releasePaymentRate) {
        this.releasePaymentRate = releasePaymentRate;
    }

    public Double getRobPaymentRate() {
        return robPaymentRate;
    }

    public void setRobPaymentRate(Double robPaymentRate) {
        this.robPaymentRate = robPaymentRate;
    }

    public Double getDeliverPaymentRate() {
        return deliverPaymentRate;
    }

    public void setDeliverPaymentRate(Double deliverPaymentRate) {
        this.deliverPaymentRate = deliverPaymentRate;
    }

    public Double getArrivalPaymentRate() {
        return arrivalPaymentRate;
    }

    public void setArrivalPaymentRate(Double arrivalPaymentRate) {
        this.arrivalPaymentRate = arrivalPaymentRate;
    }

    public Double getWaitingUnitCost() {
        return waitingUnitCost;
    }

    public void setWaitingUnitCost(Double waitingUnitCost) {
        this.waitingUnitCost = waitingUnitCost;
    }

    public Double getMembershipFee() {
        return membershipFee;
    }

    public void setMembershipFee(Double membershipFee) {
        this.membershipFee = membershipFee;
    }

    public Double getDepositAmount() {
        return depositAmount;
    }

    public void setDepositAmount(Double depositAmount) {
        this.depositAmount = depositAmount;
    }


    public String getOrganizeId() {
        return organizeId;
    }

    public void setOrganizeId(String organizeId) {
        this.organizeId = organizeId;
    }

    public String getOrganizeName() {
        return organizeName;
    }

    public void setOrganizeName(String organizeName) {
        this.organizeName = organizeName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public UserType getUserType() {
        return userType;
    }

    public void setUserType(UserType userType) {
        this.userType = userType;
    }

    public Boolean getStatus() {
        return status;
    }

    public void setStatus(Boolean status) {
        this.status = status;
    }

    public String getMemberCode() {
        return memberCode;
    }

    public void setMemberCode(String memberCode) {
        this.memberCode = memberCode;
    }

    public Boolean getIsDefault() {
        return isDefault;
    }

    public void setIsDefault(Boolean isDefault) {
        this.isDefault = isDefault;
    }

    public Boolean getDefault() {
        return isDefault;
    }

    public void setDefault(Boolean aDefault) {
        isDefault = aDefault;
    }

    public Double getBelowPlatFeeRate() {
        return belowPlatFeeRate;
    }

    public void setBelowPlatFeeRate(Double belowPlatFeeRate) {
        this.belowPlatFeeRate = belowPlatFeeRate;
    }

    public Double getShipperCarrierFeeRate() {
        return shipperCarrierFeeRate;
    }

    public void setShipperCarrierFeeRate(Double shipperCarrierFeeRate) {
        this.shipperCarrierFeeRate = shipperCarrierFeeRate;
    }

    public Double getShipperMatchFeeRate() {
        return shipperMatchFeeRate;
    }

    public void setShipperMatchFeeRate(Double shipperMatchFeeRate) {
        this.shipperMatchFeeRate = shipperMatchFeeRate;
    }

    public Double getOwnerTaxRate() {
        return ownerTaxRate;
    }

    public void setOwnerTaxRate(Double ownerTaxRate) {
        this.ownerTaxRate = ownerTaxRate;
    }

    public Double getInsuranceRate() {
        return insuranceRate;
    }

    public void setInsuranceRate(Double insuranceRate) {
        this.insuranceRate = insuranceRate;
    }

    public Double getTruckerCarrierFeeRate() {
        return truckerCarrierFeeRate;
    }

    public void setTruckerCarrierFeeRate(Double truckerCarrierFeeRate) {
        this.truckerCarrierFeeRate = truckerCarrierFeeRate;
    }

    public Double getTruckerMatchFeeRate() {
        return truckerMatchFeeRate;
    }

    public void setTruckerMatchFeeRate(Double truckerMatchFeeRate) {
        this.truckerMatchFeeRate = truckerMatchFeeRate;
    }

    public Double getAddedTaxRate() {
        return addedTaxRate;
    }

    public void setAddedTaxRate(Double addedTaxRate) {
        this.addedTaxRate = addedTaxRate;
    }

    public Double getCityTaxRate() {
        return cityTaxRate;
    }

    public void setCityTaxRate(Double cityTaxRate) {
        this.cityTaxRate = cityTaxRate;
    }

    public Double getLocalEduTaxRate() {
        return localEduTaxRate;
    }

    public void setLocalEduTaxRate(Double localEduTaxRate) {
        this.localEduTaxRate = localEduTaxRate;
    }

    public Double getEduAddTaxRate() {
        return eduAddTaxRate;
    }

    public void setEduAddTaxRate(Double eduAddTaxRate) {
        this.eduAddTaxRate = eduAddTaxRate;
    }

    public Double getIncomeTaxRate() {
        return incomeTaxRate;
    }

    public void setIncomeTaxRate(Double incomeTaxRate) {
        this.incomeTaxRate = incomeTaxRate;
    }
}
